# 第一阶段: complete build environment
FROM registry.cn-hangzhou.aliyuncs.com/ybxb/maven:3.9-8-alpine AS builder
#
WORKDIR /build
# 复制pom.xml和src文件夹
# 复制多个文件或文件夹时，目标必须是一个文件夹，且要以"/"结尾
# 如果COPY指令需要同时复制文件和文件夹时，必须分开，分成两个COPY指令，分别复制文件和文件夹。
COPY pom.xml /build/pom.xml
COPY src /build/src/
#
# 编译jar包。
# RUN mvn -s /usr/share/maven/ref/settings-docker.xml clean package -DskipTests=true
RUN mvn clean package -DskipTests=true
#
# 第二阶段: minimal runtime environment
# FROM registry.cn-hangzhou.aliyuncs.com/ybxb/openjdk:17-alpine
FROM openjdk:17-jdk
# FROM openjdk:8-jdk
# FROM openjdk:8-alpine
# docker pull openjdk:8-jdk-alpine
#
# 设置国内yum源
# RUN sed -i 's/dl-cdn.alpinelinux.org/mirrors.aliyun.com/g' /etc/apk/repositories
# 更新软件包，并设置时区
#RUN apk update \
#    && apk add tzdata \
#    && cp /usr/share/zoneinfo/Asia/Shanghai /etc/localtime  \
#    && echo "Asia/Shanghai" >> /etc/timezone \
#    && rm -rf /var/lib/apt/lists/*
# 清理apt缓存,目的是减少镜像大小。
#
# 从第一阶段的结果复制jar
COPY --from=builder /build/target/maven-boot-demo.jar /opt/app.jar
#
# 声明服务的端口
EXPOSE 28080
# 定义环境变量
ENV JAVA_OPTS="-Xms512m -Xmx512m -Dfile.encoding=UTF-8"
# 指定镜像的启动命令
# ENTRYPOINT ["/bin/bash", "-c", "java ${JAVA_OPTS} -jar /opt/app.jar"]
ENTRYPOINT java ${JAVA_OPTS} -jar /opt/app.jar